ZGlmZiAtLWdpdCBhL3VlZmkvbGluYXJvLWVkazIvVmx2MkRldmljZVJlZkNvZGVQa2cvQWNwaVRhYmxlc1BDQVQvSW9UVmlydHVhbERldmljZS5hc2wgYi91ZWZpL2xpbmFyby1lZGsyL1ZsdjJEZXZpY2VSZWZDb2RlUGtnL0FjcGlUYWJsZXNQQ0FUL0lvVFZpcnR1YWxEZXZpY2UuYXNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMTM4M2IKLS0tIC9kZXYvbnVsbAorKysgYi91ZWZpL2xpbmFyby1lZGsyL1ZsdjJEZXZpY2VSZWZDb2RlUGtnL0FjcGlUYWJsZXNQQ0FUL0lvVFZpcnR1YWxEZXZpY2UuYXNsCkBAIC0wLDAgKzEsMTc3IEBACisvKiogQGZpbGUNCitDb3B5cmlnaHQgKGMpIDIwMTQsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCitUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQord2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisNCitUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KKw0KKyoqLw0KKw0KK0RldmljZShJT1REKSB7IA0KKyAgTmFtZShfSElELCAiTVNGVDgwMDAiKQ0KKyAgTmFtZShfQ0lELCAiTVNGVDgwMDAiKQ0KKyAgDQorICBOYW1lKF9DUlMsIFJlc291cmNlVGVtcGxhdGUoKSB7ICANCisgICAgLy8gSW5kZXggMCANCisgICAgU1BJU2VyaWFsQnVzKCAgICAgICAgICAgIC8vIFBpbiA1LCA3LCA5ICwgMTEgb2YgSlAxIGZvciBTSU9fU1BJDQorICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAvLyBEZXZpY2Ugc2VsZWN0aW9uDQorICAgICAgUG9sYXJpdHlMb3csICAgICAgICAgICAvLyBEZXZpY2Ugc2VsZWN0aW9uIHBvbGFyaXR5DQorICAgICAgRm91cldpcmVNb2RlLCAgICAgICAgICAvLyB3aXJlbW9kZQ0KKyAgICAgIDgsICAgICAgICAgICAgICAgICAgICAgLy8gZGF0YWJpdCBsZW4NCisgICAgICBDb250cm9sbGVySW5pdGlhdGVkLCAgIC8vIHNsYXZlIG1vZGUNCisgICAgICA4MDAwMDAwLCAgICAgICAgICAgICAgIC8vIENvbm5lY3Rpb24gc3BlZWQNCisgICAgICBDbG9ja1BvbGFyaXR5TG93LCAgICAgIC8vIENsb2NrIHBvbGFyaXR5DQorICAgICAgQ2xvY2tQaGFzZVNlY29uZCwgICAgICAvLyBjbG9jayBwaGFzZQ0KKyAgICAgICJcXF9TQi5TUEkxIiwgICAgICAgICAgLy8gUmVzb3VyY2VTb3VyY2U6IFNQSSBidXMgY29udHJvbGxlciBuYW1lDQorICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZVNvdXJjZUluZGV4DQorICAgICAgUmVzb3VyY2VDb25zdW1lciwgICAgICAvLyBSZXNvdXJjZSB1c2FnZQ0KKyAgICAgIEpTUEksICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRvck5hbWU6IGNyZWF0ZXMgbmFtZSBmb3Igb2Zmc2V0IG9mIHJlc291cmNlIGRlc2NyaXB0b3INCisgICAgICApICAgICAgICAgICAgICAgICAgICAgIC8vIFZlbmRvciBEYXRhICANCisgICAgDQorICAgIC8vIEluZGV4IDEgICAgIA0KKyAgICBJMkNTZXJpYWxCdXMoICAgICAgICAgICAgLy8gUGluIDEzLCAxNSBvZiBKUDEsIGZvciBTSU9fSTJDNSAoc2lnbmFsKQ0KKyAgICAgIDB4MDAsICAgICAgICAgICAgICAgICAgLy8gU2xhdmVBZGRyZXNzOiBidXMgYWRkcmVzcyAoVEJEKQ0KKyAgICAgICwgICAgICAgICAgICAgICAgICAgICAgLy8gU2xhdmVNb2RlOiBkZWZhdWx0IHRvIENvbnRyb2xsZXJJbml0aWF0ZWQNCisgICAgICA0MDAwMDAsICAgICAgICAgICAgICAgIC8vIENvbm5lY3Rpb25TcGVlZDogaW4gSHoNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZHJlc3NpbmcgTW9kZTogZGVmYXVsdCB0byA3IGJpdA0KKyAgICAgICJcXF9TQi5JMkM2IiwgICAgICAgICAgLy8gUmVzb3VyY2VTb3VyY2U6IEkyQyBidXMgY29udHJvbGxlciBuYW1lIChGb3IgTWlubm93Qm9hcmQgTWF4LCBoYXJkd2FyZSBJMkM1KDAtYmFzZWQpIGlzIHJlcG9ydGVkIGFzIEFDUEkgSTJDNigxLWJhc2VkKSkNCisgICAgICAsDQorICAgICAgLA0KKyAgICAgIEpJMkMsICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRvciBOYW1lOiBjcmVhdGVzIG5hbWUgZm9yIG9mZnNldCBvZiByZXNvdXJjZSBkZXNjcmlwdG9yDQorICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAvLyBWZW5kb3JEYXRhDQorICAgIA0KKyAgICAvLyBJbmRleCAyDQorICAgIFVBUlRTZXJpYWxCdXMoICAgICAgICAgICAvLyBQaW4gMTcsIDE5IG9mIEpQMSwgZm9yIFNJT19VQVJUMg0KKyAgICAgIDExNTIwMCwgICAgICAgICAgICAgICAgLy8gSW5pdGlhbEJhdWRSYXRlOiBpbiBiaXRzIGJlciBzZWNvbmQNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdHNQZXJCeXRlOiBkZWZhdWx0IHRvIDggYml0cw0KKyAgICAgICwgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcEJpdHM6IERlZmF1bHRzIHRvIG9uZSBiaXQNCisgICAgICAweGZjLCAgICAgICAgICAgICAgICAgIC8vIExpbmVzSW5Vc2U6IDggMS1iaXQgZmxhZ3MgdG8gZGVjbGFyZSBsaW5lIGVuYWJsZWQNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIElzQmlnRW5kaWFuOiBkZWZhdWx0IHRvIExpdHRsZUVuZGlhbg0KKyAgICAgICwgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyaXR5OiBEZWZhdWx0cyB0byBubyBwYXJpdHkNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIEZsb3dDb250cm9sOiBEZWZhdWx0cyB0byBubyBmbG93IGNvbnRyb2wNCisgICAgICAzMiwgICAgICAgICAgICAgICAgICAgIC8vIFJlY2VpdmVCdWZmZXJTaXplDQorICAgICAgMzIsICAgICAgICAgICAgICAgICAgICAvLyBUcmFuc21pdEJ1ZmZlclNpemUNCisgICAgICAiXFxfU0IuVVJUMiIsICAgICAgICAgIC8vIFJlc291cmNlU291cmNlOiBVQVJUIGJ1cyBjb250cm9sbGVyIG5hbWUNCisgICAgICAsDQorICAgICAgLA0KKyAgICAgIFVBUjIsICAgICAgICAgICAgICAgICAgLy8gRGVzY3JpcHRvck5hbWU6IGNyZWF0ZXMgbmFtZSBmb3Igb2Zmc2V0IG9mIHJlc291cmNlIGRlc2NyaXB0b3INCisgICAgICApICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICANCisgICAgLy8gSW5kZXggMw0KKyAgICBHcGlvSW8gKFNoYXJlZCwgUHVsbERlZmF1bHQsIDAsIDAsIElvUmVzdHJpY3Rpb25Ob25lLCAiXFxfU0IuR1BPMiIsKSB7MH0gIC8vIFBpbiAyMSBvZiBKUDEgKEdQSU9fUzVbMDBdKQ0KKyAgICAvLyBJbmRleCA0DQorICAgIEdwaW9JbnQoRWRnZSwgQWN0aXZlQm90aCwgU2hhcmVkQW5kV2FrZSwgUHVsbE5vbmUsIDAsIlxcX1NCLkdQTzIiLCkgezB9IA0KKyAgICANCisgICAgLy8gSW5kZXggNQ0KKyAgICBHcGlvSW8gKFNoYXJlZCwgUHVsbERlZmF1bHQsIDAsIDAsIElvUmVzdHJpY3Rpb25Ob25lLCAiXFxfU0IuR1BPMiIsKSB7MX0gIC8vIFBpbiAyMyBvZiBKUDEgKEdQSU9fUzVbMDFdKQ0KKyAgICAvLyBJbmRleCA2DQorICAgIEdwaW9JbnQoRWRnZSwgQWN0aXZlQm90aCwgU2hhcmVkQW5kV2FrZSwgUHVsbE5vbmUsIDAsIlxcX1NCLkdQTzIiLCkgezF9DQorICAgIA0KKyAgICAvLyBJbmRleCA3DQorICAgIEdwaW9JbyAoU2hhcmVkLCBQdWxsRGVmYXVsdCwgMCwgMCwgSW9SZXN0cmljdGlvbk5vbmUsICJcXF9TQi5HUE8yIiwpIHsyfSAgLy8gUGluIDI1IG9mIEpQMSAoR1BJT19TNVswMl0pDQorICAgIC8vIEluZGV4IDgNCisgICAgR3Bpb0ludChFZGdlLCBBY3RpdmVCb3RoLCBTaGFyZWRBbmRXYWtlLCBQdWxsTm9uZSwgMCwiXFxfU0IuR1BPMiIsKSB7Mn0gDQorICAgIA0KKyAgICAvLyBJbmRleCA5DQorICAgIFVBUlRTZXJpYWxCdXMoICAgICAgICAgICAvLyBQaW4gNiwgOCwgMTAsIDEyIG9mIEpQMSwgZm9yIFNJT19VQVJUMQ0KKyAgICAgIDExNTIwMCwgICAgICAgICAgICAgICAgLy8gSW5pdGlhbEJhdWRSYXRlOiBpbiBiaXRzIGJlciBzZWNvbmQNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIEJpdHNQZXJCeXRlOiBkZWZhdWx0IHRvIDggYml0cw0KKyAgICAgICwgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcEJpdHM6IERlZmF1bHRzIHRvIG9uZSBiaXQNCisgICAgICAweGZjLCAgICAgICAgICAgICAgICAgIC8vIExpbmVzSW5Vc2U6IDggMS1iaXQgZmxhZ3MgdG8gZGVjbGFyZSBsaW5lIGVuYWJsZWQNCisgICAgICAsICAgICAgICAgICAgICAgICAgICAgIC8vIElzQmlnRW5kaWFuOiBkZWZhdWx0IHRvIExpdHRsZUVuZGlhbg0KKyAgICAgICwgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyaXR5OiBEZWZhdWx0cyB0byBubyBwYXJpdHkNCisgICAgICBGbG93Q29udHJvbEhhcmR3YXJlLCAgIC8vIEZsb3dDb250cm9sOiBEZWZhdWx0cyB0byBubyBmbG93IGNvbnRyb2wNCisgICAgICAzMiwgICAgICAgICAgICAgICAgICAgIC8vIFJlY2VpdmVCdWZmZXJTaXplDQorICAgICAgMzIsICAgICAgICAgICAgICAgICAgICAvLyBUcmFuc21pdEJ1ZmZlclNpemUNCisgICAgICAiXFxfU0IuVVJUMSIsICAgICAgICAgIC8vIFJlc291cmNlU291cmNlOiBVQVJUIGJ1cyBjb250cm9sbGVyIG5hbWUNCisgICAgICAsDQorICAgICAgLA0KKyAgICAgIFVBUjEsICAgICAgICAgICAgICAvLyBEZXNjcmlwdG9yTmFtZTogY3JlYXRlcyBuYW1lIGZvciBvZmZzZXQgb2YgcmVzb3VyY2UgZGVzY3JpcHRvcg0KKyAgICAgICkgIA0KKyAgICANCisgICAgLy8gSW5kZXggMTANCisgICAgR3Bpb0lvIChTaGFyZWQsIFB1bGxEZWZhdWx0LCAwLCAwLCBJb1Jlc3RyaWN0aW9uTm9uZSwgIlxcX1NCLkdQTzAiLCkgezYyfSAgLy8gUGluIDE0IG9mIEpQMSAoR1BJT19TQ1s2Ml0pDQorICAgIC8vIEluZGV4IDExDQorICAgIEdwaW9JbnQoRWRnZSwgQWN0aXZlQm90aCwgU2hhcmVkQW5kV2FrZSwgUHVsbE5vbmUsIDAsIlxcX1NCLkdQTzAiLCkgezYyfSANCisgICAgDQorICAgIC8vIEluZGV4IDEyDQorICAgIEdwaW9JbyAoU2hhcmVkLCBQdWxsRGVmYXVsdCwgMCwgMCwgSW9SZXN0cmljdGlvbk5vbmUsICJcXF9TQi5HUE8wIiwpIHs2M30gIC8vIFBpbiAxNiBvZiBKUDEgKEdQSU9fU0NbNjNdKQ0KKyAgICAvLyBJbmRleCAxMw0KKyAgICBHcGlvSW50KEVkZ2UsIEFjdGl2ZUJvdGgsIFNoYXJlZEFuZFdha2UsIFB1bGxOb25lLCAwLCJcXF9TQi5HUE8wIiwpIHs2M30gDQorICAgIA0KKyAgICAvLyBJbmRleCAxNA0KKyAgICBHcGlvSW8gKFNoYXJlZCwgUHVsbERlZmF1bHQsIDAsIDAsIElvUmVzdHJpY3Rpb25Ob25lLCAiXFxfU0IuR1BPMCIsKSB7NjV9ICAvLyBQaW4gMTggb2YgSlAxIChHUElPX1NDWzY1XSkNCisgICAgLy8gSW5kZXggMTUNCisgICAgR3Bpb0ludChFZGdlLCBBY3RpdmVCb3RoLCBTaGFyZWRBbmRXYWtlLCBQdWxsTm9uZSwgMCwiXFxfU0IuR1BPMCIsKSB7NjV9IA0KKyAgICANCisgICAgLy8gSW5kZXggMTYNCisgICAgR3Bpb0lvIChTaGFyZWQsIFB1bGxEZWZhdWx0LCAwLCAwLCBJb1Jlc3RyaWN0aW9uTm9uZSwgIlxcX1NCLkdQTzAiLCkgezY0fSAgLy8gUGluIDIwIG9mIEpQMSAoR1BJT19TQ1s2NF0pDQorICAgIC8vIEluZGV4IDE3DQorICAgIEdwaW9JbnQoRWRnZSwgQWN0aXZlQm90aCwgU2hhcmVkQW5kV2FrZSwgUHVsbE5vbmUsIDAsIlxcX1NCLkdQTzAiLCkgezY0fSANCisgICAgDQorICAgIC8vIEluZGV4IDE4DQorICAgIEdwaW9JbyAoU2hhcmVkLCBQdWxsRGVmYXVsdCwgMCwgMCwgSW9SZXN0cmljdGlvbk5vbmUsICJcXF9TQi5HUE8wIiwpIHs5NH0gIC8vIFBpbiAyMiBvZiBKUDEgKEdQSU9fU0NbOTRdKQ0KKyAgICAvLyBJbmRleCAxOQ0KKyAgICBHcGlvSW50KEVkZ2UsIEFjdGl2ZUJvdGgsIFNoYXJlZEFuZFdha2UsIFB1bGxOb25lLCAwLCJcXF9TQi5HUE8wIiwpIHs5NH0gDQorICAgIA0KKyAgICAvLyBJbmRleCAyMA0KKyAgICBHcGlvSW8gKFNoYXJlZCwgUHVsbERlZmF1bHQsIDAsIDAsIElvUmVzdHJpY3Rpb25Ob25lLCAiXFxfU0IuR1BPMCIsKSB7OTV9ICAvLyBQaW4gMjQgb2YgSlAxIChHUElPX1NDWzk1XSkNCisgICAgLy8gSW5kZXggMjENCisgICAgR3Bpb0ludChFZGdlLCBBY3RpdmVCb3RoLCBTaGFyZWRBbmRXYWtlLCBQdWxsTm9uZSwgMCwiXFxfU0IuR1BPMCIsKSB7OTV9IA0KKyAgICANCisgICAgLy8gSW5kZXggMjINCisgICAgR3Bpb0lvIChTaGFyZWQsIFB1bGxEZWZhdWx0LCAwLCAwLCBJb1Jlc3RyaWN0aW9uTm9uZSwgIlxcX1NCLkdQTzAiLCkgezU0fSAgLy8gUGluIDI2IG9mIEpQMSAoR1BJT19TQ1s1NF0pDQorICAgIC8vIEluZGV4IDIzDQorICAgIEdwaW9JbnQoRWRnZSwgQWN0aXZlQm90aCwgU2hhcmVkQW5kV2FrZSwgUHVsbE5vbmUsIDAsIlxcX1NCLkdQTzAiLCkgezU0fQ0KKyAgfSkNCisNCisgIE5hbWUoX0RTRCwgUGFja2FnZSgpIHsNCisgICAgVG9VVUlEKCJkYWZmZDgxNC02ZWJhLTRkOGMtOGE5MS1iYzliYmY0YWEzMDEiKSwNCisgICAgUGFja2FnZSgxKSB7CSAgLy8gSnVzdCBvbmUgUHJvcGVydHkgZm9yIElPVCAoYXQgdGhpcyB0aW1lKSANCisgICAgICBQYWNrYWdlKDIpIHsJLy9UaGUgk3N5bWJvbGljLWlkZW50aWZpZXJzlCBwcm9wZXJ0eQ0KKyAgICAgICAgInN5bWJvbGljLWlkZW50aWZpZXJzIiwgDQorICAgICAgICBQYWNrYWdlKCkgewkvL0NvbnRhaW5zIGFsbCB0aGUgPHJlc291cmNlIGluZGV4LCBzeW1ib2xpYy1pZGVudGlmaWVyPiBwYWlycyAgICAgICANCisgICAgICAgICAgMCwgIlNQSTAiLAkgIA0KKyAgICAgICAgICAxLCAiSTJDNSIsCQkNCisgICAgICAgICAgMiwgIlVBUlQyIiwNCisgICAgICAgICAgMywgMjEsICAgICAgIC8vIFBpbiAyMSBvZiBKUDEgKEdQSU9fUzVbMDBdKQ0KKyAgICAgICAgICA0LCAyMSwgICAgICAgLy8gUGluIDIxIGZvciBzZXBhcmF0ZSByZXNvdXJjZS4gDQorICAgICAgICAgIDUsIDIzLCAgICAgICAvLyBQaW4gMjMgb2YgSlAxIChHUElPX1M1WzAxXSkNCisgICAgICAgICAgNiwgMjMsDQorICAgICAgICAgIDcsIDI1LCAgICAgICAvLyBQaW4gMjUgb2YgSlAxIChHUElPX1M1WzAyXSkNCisgICAgICAgICAgOCwgMjUsDQorICAgICAgICAgIDksICJVQVJUMSIsDQorICAgICAgICAgIDEwLCAxNCwgICAgICAvLyBQaW4gMTQgb2YgSlAxIChHUElPX1NDWzYyXSkNCisgICAgICAgICAgMTEsIDE0LA0KKyAgICAgICAgICAxMiwgMTYsICAgICAgLy8gUGluIDE2IG9mIEpQMSAoR1BJT19TQ1s2M10pDQorICAgICAgICAgIDEzLCAxNiwNCisgICAgICAgICAgMTQsIDE4LCAgICAgIC8vIFBpbiAxOCBvZiBKUDEgKEdQSU9fU0NbNjVdKQ0KKyAgICAgICAgICAxNSwgMTgsDQorICAgICAgICAgIDE2LCAyMCwgICAgICAvLyBQaW4gMjAgb2YgSlAxIChHUElPX1NDWzY0XSkNCisgICAgICAgICAgMTcsIDIwLA0KKyAgICAgICAgICAxOCwgMjIsICAgICAgLy8gUGluIDIyIG9mIEpQMSAoR1BJT19TQ1s5NF0pDQorICAgICAgICAgIDE5LCAyMiwNCisgICAgICAgICAgMjAsIDI0LCAgICAgIC8vIFBpbiAyNCBvZiBKUDEgKEdQSU9fU0NbOTVdKQ0KKyAgICAgICAgICAyMSwgMjQsDQorICAgICAgICAgIDIyLCAyNiwgICAgICAvLyBQaW4gMjYgb2YgSlAxIChHUElPX1NDWzU0XSkNCisgICAgICAgICAgMjMsIDI2DQorICAgICAgICB9DQorICAgICAgfSANCisgICAgfQ0KKyAgfSkNCisgIA0KKyAgTWV0aG9kKF9TVEEsMCxTZXJpYWxpemVkKSB7DQorICAgIA0KKyAgICAvLw0KKyAgICAvLyBPbmx5IHJlcG9ydCBJb1QgdmlydHVhbCBkZXZpY2Ugd2hlbiBhbGwgcGlucycgY29uZmlndXJhdGlvbiBmb2xsb3dzIE1TRlQncyBkYXRhc2hlZXQuDQorICAgIC8vDQorICAgIElmIChMRXF1YWwoSU9ULCAxKSkgew0KKyAgICAgIFJldHVybiAoMHhGKQ0KKyAgICB9DQorICAgIA0KKyAgICBSZXR1cm4gKDB4MCkNCisgIH0NCit9DQo=